#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->setWindowTitle("我的记事本");
    // 创建菜单栏
    QMenuBar* menuBar = this->menuBar();
    this->setMenuBar(menuBar);
    // 创建菜单
    QMenu* menu = new QMenu("文件");
    menuBar->addMenu(menu);
    // 添加菜单项
    QAction* action1 = new QAction("打开");
    QAction* action2 = new QAction("保存");
    menu->addAction(action1);
    menu->addAction(action2);

    // 创建多行文本输入框
    edit = new QTextEdit();
    QFont font;
    font.setPixelSize(20);
    edit->setFont(font);
    this->setCentralWidget(edit);

    connect(action1, &QAction::triggered, this, &MainWindow::actionHandle1);
    connect(action2, &QAction::triggered, this, &MainWindow::actionHandle2);

}

MainWindow::~MainWindow()
{
    delete ui;
}
// 打开文件
void MainWindow::actionHandle1()
{
    // 打开文件对话框
    QString path = QFileDialog::getOpenFileName(this);

    // 显示到状态栏中
    QStatusBar* statusBar = new QStatusBar();
    statusBar->showMessage(path);

    // 打开文件(读文件)
    QFile file(path);
    bool ret = file.open(QIODevice::ReadOnly);//QFile也可以
    if(ret == false)
    {
        QMessageBox* message = new QMessageBox();
        message->setText(path + "文件打开失败");
        message->setIcon(QMessageBox::Warning);
        return;
    }

    // 打印文件信息
    QFileInfo info(path);
    qDebug() << info.fileName();
    qDebug() << info.suffix();// 后缀名
    qDebug() << info.path();
    qDebug() << info.isDir();
    qDebug() << info.isFile();
    // …………

    // 读取文件
    QString text = file.readAll();

    //关闭文件
    file.close();

    // 将读到的文件内容显示到文本框中
    edit->setText(text);
}
// 保存文件
void MainWindow::actionHandle2()
{
    // 弹出保存文件对话框
    QString path = QFileDialog::getSaveFileName(this);

    // 显示保存文件名称到状态栏
    QStatusBar* statusBar = new QStatusBar();
    statusBar->showMessage(path);

    // 打开文件(写文件)
    QFile file(path);
    bool ret = file.open(QFile::WriteOnly);
    if(ret == false)
    {
        QMessageBox* message = new QMessageBox();
        message->setText(path + "文件打开失败");
        message->setIcon(QMessageBox::Warning);
        return;
    }

    //将文本编辑框中的数据写到文件中
    file.write(edit->toPlainText().toUtf8());// 转成QByteArray

    // 关闭文件
    file.close();
}

